home *** CD-ROM | disk | FTP | other *** search
/ Freelog Special Freeware 31 / FreelogHS31.iso / ArgentCompta / FASTCOMPTA / Setup FASTCOMPTA.exe / {app} / PONT COMPTABLE FASTCAISSE.SQL < prev    next >
Text File  |  2006-11-03  |  12KB  |  393 lines

  1. CREATE PROCEDURE "INTERROGATION_PONTA"
  2. (
  3.   "DATEDEB" DATE,
  4.   "DATEFIN" DATE,
  5.   "DETAIL_VERSEMENTS" SMALLINT,
  6.   "DETAIL_TVA" SMALLINT,
  7.   "DETAIL_TVA_PORT" SMALLINT,
  8.   "DETAIL_HT" SMALLINT
  9. )
  10. RETURNS
  11. (
  12.   "DATEPIECE" TIMESTAMP,
  13.   "NOPIECE" VARCHAR(15),
  14.   "NOLIGNE" SMALLINT,
  15.   "INFO1" VARCHAR(15),
  16.   "INFO2" VARCHAR(15),
  17.   "LIBELLE" VARCHAR(85),
  18.   "DEBIT" DECIMAL(12, 2),
  19.   "CREDIT" DECIMAL(12, 2),
  20.   "ESTPAYE" CHAR(1),
  21.   "ESTESP" CHAR(1),
  22.   "INDX" INTEGER,
  23.   "BLOBLIGNE" BLOB SUB_TYPE 1 SEGMENT SIZE 80
  24. )
  25. AS
  26. DECLARE VARIABLE TTC DECIMAL(12,2);
  27. DECLARE VARIABLE M1 DECIMAL(15,2);
  28. DECLARE VARIABLE TVA DECIMAL(12,2);
  29. DECLARE VARIABLE HT DECIMAL(12,2);
  30. DECLARE VARIABLE NOTIERS INTEGER;
  31. DECLARE VARIABLE ST VARCHAR(200);
  32. DECLARE VARIABLE TYPEPIECE VARCHAR(35);
  33. DECLARE VARIABLE TYPEVERS VARCHAR(35);
  34. DECLARE VARIABLE TAUX DECIMAL(6,2);
  35. DECLARE VARIABLE TAUXTVA INTEGER;
  36. DECLARE VARIABLE TVAPORT INTEGER;
  37. DECLARE VARIABLE PORT DECIMAL(12,2);
  38. DECLARE VARIABLE I INTEGER;
  39. DECLARE VARIABLE REDUC DECIMAL(5,2);
  40. BEGIN
  41. FOR SELECT P.INDX,P.DATEPIECE,P.NOPIECE,P.TOTALTVA,P.TOTALTTC,P.NOTIERS,P.TVAPORT,
  42.     P.PORT,P.PCREDUC+P.PCESCOMPTE,
  43.     T.COMPTGENE,T.COMPTAUXI,C.DESIGNATION
  44.     FROM PIECES P
  45.     LEFT JOIN FOURNISSEURS T ON T.INDX=P.NOTIERS
  46.     LEFT JOIN CHAINES C on (c.TYPEC=0) AND (c.LIGNE=p.TYPEPIECE) AND (C.COLONNE=0)
  47.     WHERE P.TOTALTTC<>0 AND P.DATEPONT IS NULL AND P.DATEPIECE>=:DATEDEB
  48.     AND P.DATEPIECE<:DATEFIN AND TYPEPIECE IN (13,14)
  49.     ORDER BY P.DATEPIECE
  50.     INTO :INDX,:DATEPIECE,:NOPIECE,:TVA,:TTC,:NOTIERS,:TVAPORT,:PORT,:REDUC,
  51.     :INFO1,:INFO2,:TYPEPIECE DO
  52.   BEGIN
  53.   HT = TTC - TVA;
  54.   NOLIGNE=1;
  55.   IF (INFO1 IS NULL OR INFO1='') THEN INFO1='401000';
  56.   SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX INTO :M1;
  57.   IF (TTC=M1) THEN ESTPAYE = 'O'; ELSE ESTPAYE = 'N';
  58.   SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX AND TYPEV=0 INTO :M1;
  59.   IF (TTC=M1) THEN ESTESP = 'O'; ELSE ESTESP = 'N';
  60.   IF (NOTIERS>0) THEN SELECT AVALUE FROM GET_NOM_FOUR(:NOTIERS) INTO :ST;
  61.                  ELSE ST = 'N░ ' || NOPIECE;
  62.   /* LIGNE 1 (Montant TTC) */
  63.   IF (DETAIL_VERSEMENTS<>0) THEN
  64.     BEGIN
  65.     /* DΘtailler les versements */
  66.     FOR SELECT C.DESIGNATION,V.MONTANT FROM VERSEMENTS V
  67.         LEFT JOIN CHAINES C on (c.TYPEC=22) AND (c.LIGNE=V.TYPEV) AND (C.COLONNE=0)
  68.         WHERE V.INDEXPIECE=:INDX AND V.MONTANT<>0
  69.         ORDER BY V.DATEV
  70.         INTO :TYPEVERS,:M1 DO
  71.       BEGIN
  72.       TTC = TTC-M1;
  73.       CREDIT=NULL;
  74.       DEBIT=NULL;
  75.       IF (M1<0) THEN DEBIT=-M1; ELSE CREDIT=M1;
  76.       LIBELLE = TYPEVERS || ' ' || TYPEPIECE || ' ' || ST;
  77.       SUSPEND;
  78.       END
  79.     END
  80.   CREDIT=NULL;
  81.   DEBIT=NULL;
  82.   IF(TTC<>0) THEN
  83.     BEGIN
  84.     LIBELLE = TYPEPIECE || ' ' || ST;
  85.     IF (TTC<0) THEN DEBIT=-TTC; ELSE CREDIT=TTC;
  86.     SUSPEND;
  87.     END
  88.  
  89.   /*
  90.   * LIGNE 2
  91.   * (TVA)
  92.   */
  93.   NOLIGNE=2;
  94.   INFO1 = '445660';
  95.   INFO2 = '';
  96.   IF (TVA<>0) THEN
  97.     BEGIN
  98.     /* Faire d'abord le port */
  99.     IF (DETAIL_TVA_PORT=1 AND PORT<>0) THEN
  100.       BEGIN
  101.       LIBELLE = 'TVA ' || CAST(CAST(TVAPORT AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  102.       M1 = (PORT * TVAPORT /10000);
  103.       TVA = TVA - M1;
  104.       IF (M1>0) THEN DEBIT=M1; ELSE CREDIT=-M1;
  105.       INFO2 = 'PORT';
  106.       SUSPEND;
  107.       END
  108.     /* DΘtailler TVA avec un seul taux revient α ne pas dΘtailler la TVA */
  109.     I=0;
  110.     FOR SELECT DISTINCT TVA FROM LIGNES L
  111.     WHERE INDEXPIECE=:INDX AND TVA<>0 INTO :TAUXTVA DO I=I+1;
  112.     /* Ensuite le cas simple */
  113.     IF ((DETAIL_TVA=0) or (i=1) ) THEN
  114.       BEGIN
  115.       /* Ne pas dΘtailler plusieurs taux
  116.       /* vΘrifier si un seul taux dans la piΦce
  117.       ce qui permet de faire un libellΘ prΘcis */
  118.       if (I=1) then LIBELLE = 'TVA ' || CAST(CAST(TAUXTVA AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  119.       ELSE LIBELLE = 'TVA';
  120.       CREDIT=NULL;
  121.       DEBIT=NULL;
  122.       IF (TVA>0) THEN DEBIT=TVA; ELSE CREDIT=-TVA;
  123.       INFO2 = '';
  124.       SUSPEND;
  125.       END /* IF */
  126.     ELSE
  127.       BEGIN
  128.       /* Cas compliquΘ: Calculer ligne par ligne.... */
  129.       FOR SELECT TVA,SUM(l.PRIX*l.QUANTITE*((100-(L.REMISE+:REDUC))/100)*TVA/10000) FROM LIGNES L
  130.           WHERE INDEXPIECE=:INDX AND TVA<>0
  131.           GROUP BY TVA INTO :TAUXTVA,:M1 DO
  132.         BEGIN
  133.         CREDIT=NULL;
  134.         DEBIT=NULL;
  135.         IF (ABS(TVA-M1)<0.03) THEN M1=TVA;
  136.         LIBELLE = 'TVA ' || CAST(CAST(TAUXTVA AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  137.         TVA = TVA - M1;
  138.         IF (M1>0) THEN DEBIT=M1; ELSE CREDIT=-M1;
  139.         INFO2 = TAUXTVA;
  140.         SUSPEND;
  141.         END
  142.         /* Le reste de la TVA */
  143.       IF (TVA<>0) THEN
  144.         /* ProblΦme d'arrondi */
  145.         BEGIN
  146.         CREDIT=NULL;
  147.         DEBIT=NULL;
  148.         LIBELLE = 'Ecart sur calcul TVA par lignes';
  149.         INFO2 = 'ERREUR';
  150.         IF (TVA>0) THEN DEBIT=TVA; ELSE CREDIT=-TVA;
  151.         SUSPEND;
  152.         END
  153.       END /* dΘtail*/
  154.     END /* tva <>0 */
  155.   /*
  156.   * LIGNE 3
  157.   * (LIGNES DE FACTURE HT)
  158.   */
  159.   NOLIGNE=3;
  160.   INFO1 = '';
  161.   INFO2 = '';
  162.   LIBELLE = '';
  163.   FOR SELECT LIBELLE,l.PRIX*l.QUANTITE*((100-(L.REMISE+:REDUC))/100) AS TOT,L.TVA,
  164.       R.CPTACHAT,R.CPTIMPORT
  165.       FROM LIGNES L
  166.       LEFT JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  167.       LEFT JOIN DESIGNATIONS D ON D.INDXART=L.INDEXARTICLE AND D.CODELANGUE=1
  168.       LEFT JOIN RAYONS R ON R.PKEY=A.PKEYR
  169.       WHERE L.INDEXPIECE=:INDX AND PRIX<>0 AND QUANTITE<>0
  170.       ORDER BY 2 DESC
  171.       INTO :BLOBLIGNE,:M1,:TAUXTVA,:INFO1,:ST DO IF (HT<>0) THEN
  172.     BEGIN
  173.     CREDIT=NULL;
  174.     DEBIT=NULL;
  175.     IF (TAUXTVA=0) THEN INFO1 = ST; /* utiliser compte import au lieu de compte achat */
  176.     IF ((DETAIL_HT=0) OR (ABS(HT-M1)<0.03)) THEN M1 = HT; /* si pas de dΘtail: prendre seulement 1 compte */
  177.     HT = HT - M1;
  178.     IF (M1>0) THEN DEBIT=M1; ELSE CREDIT=-M1;
  179.     SUSPEND;
  180.     END
  181.   BLOBLIGNE = NULL;
  182.   IF (HT<>0) THEN
  183.     /* ProblΦme d'arrondi */
  184.     BEGIN
  185.     CREDIT=NULL;
  186.     DEBIT=NULL;
  187.     LIBELLE = 'Ecart sur calcul HT par lignes';
  188.     INFO2 = 'ERREUR';
  189.     IF (HT>0) THEN DEBIT=HT; ELSE CREDIT=-HT;
  190.     SUSPEND;
  191.     END
  192.   END
  193. END
  194.  ;
  195.  
  196.  
  197. CREATE PROCEDURE "INTERROGATION_PONTV"
  198. (
  199.   "DATEDEB" DATE,
  200.   "DATEFIN" DATE,
  201.   "DETAIL_VERSEMENTS" SMALLINT,
  202.   "DETAIL_TVA" SMALLINT,
  203.   "DETAIL_TVA_PORT" SMALLINT,
  204.   "DETAIL_HT" SMALLINT
  205. )
  206. RETURNS
  207. (
  208.   "DATEPIECE" TIMESTAMP,
  209.   "NOPIECE" VARCHAR(15),
  210.   "NOLIGNE" SMALLINT,
  211.   "INFO1" VARCHAR(15),
  212.   "INFO2" VARCHAR(15),
  213.   "LIBELLE" VARCHAR(85),
  214.   "DEBIT" DECIMAL(12, 2),
  215.   "CREDIT" DECIMAL(12, 2),
  216.   "ESTPAYE" CHAR(1),
  217.   "ESTESP" CHAR(1),
  218.   "INDX" INTEGER,
  219.   "BLOBLIGNE" BLOB SUB_TYPE 1 SEGMENT SIZE 80
  220. )
  221. AS
  222. DECLARE VARIABLE TTC DECIMAL(12,2);
  223. DECLARE VARIABLE M1 DECIMAL(15,2);
  224. DECLARE VARIABLE TVA DECIMAL(12,2);
  225. DECLARE VARIABLE HT DECIMAL(12,2);
  226. DECLARE VARIABLE NOTIERS INTEGER;
  227. DECLARE VARIABLE ST VARCHAR(200);
  228. DECLARE VARIABLE TYPEPIECE VARCHAR(35);
  229. DECLARE VARIABLE TYPEVERS VARCHAR(35);
  230. DECLARE VARIABLE TAUX DECIMAL(6,2);
  231. DECLARE VARIABLE TAUXTVA INTEGER;
  232. DECLARE VARIABLE TVAPORT INTEGER;
  233. DECLARE VARIABLE PORT DECIMAL(12,2);
  234. DECLARE VARIABLE I INTEGER;
  235. DECLARE VARIABLE REDUC DECIMAL(5,2);
  236. BEGIN
  237. FOR SELECT P.INDX,P.DATEPIECE,P.NOPIECE,P.TOTALTVA,P.TOTALTTC,P.NOTIERS,P.TVAPORT,
  238.     P.PORT,P.PCREDUC+P.PCESCOMPTE,
  239.     T.COMPTGENE,T.COMPTAUXI,C.DESIGNATION
  240.     FROM PIECES P
  241.     LEFT JOIN CLIENTS T ON T.INDX=P.NOTIERS
  242.     LEFT JOIN CHAINES C on (c.TYPEC=0) AND (c.LIGNE=p.TYPEPIECE) AND (C.COLONNE=0)
  243.     WHERE P.TOTALTTC<>0 AND P.DATEPONT IS NULL AND P.DATEPIECE>=:DATEDEB
  244.     AND P.DATEPIECE<:DATEFIN AND z<>0
  245.     ORDER BY P.DATEPIECE
  246.     INTO :INDX,:DATEPIECE,:NOPIECE,:TVA,:TTC,:NOTIERS,:TVAPORT,:PORT,:REDUC,
  247.     :INFO1,:INFO2,:TYPEPIECE DO
  248.   BEGIN
  249.   HT = TTC - TVA;
  250.   NOLIGNE=1;
  251.   IF (INFO1 IS NULL OR INFO1='') THEN INFO1='411000';
  252.   SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX INTO :M1;
  253.   IF (TTC=M1) THEN ESTPAYE = 'O'; ELSE ESTPAYE = 'N';
  254.   SELECT SUM(MONTANT) FROM VERSEMENTS WHERE INDEXPIECE=:INDX AND TYPEV=0 INTO :M1;
  255.   IF (TTC=M1) THEN ESTESP = 'O'; ELSE ESTESP = 'N';
  256.   IF (NOTIERS>0) THEN SELECT AVALUE FROM GET_NOM_CLIENT(:NOTIERS) INTO :ST;
  257.                  ELSE ST = 'N░ ' || NOPIECE;
  258.   /* LIGNE 1 (Montant TTC) */
  259.   IF (DETAIL_VERSEMENTS<>0) THEN
  260.     BEGIN
  261.     /* DΘtailler les versements */
  262.     FOR SELECT C.DESIGNATION,V.MONTANT FROM VERSEMENTS V
  263.         LEFT JOIN CHAINES C on (c.TYPEC=22) AND (c.LIGNE=V.TYPEV) AND (C.COLONNE=0)
  264.         WHERE V.INDEXPIECE=:INDX AND V.MONTANT<>0
  265.         ORDER BY V.DATEV
  266.         INTO :TYPEVERS,:M1 DO
  267.       BEGIN
  268.       TTC = TTC-M1;
  269.       CREDIT=NULL;
  270.       DEBIT=NULL;
  271.       IF (M1>0) THEN DEBIT=M1; ELSE CREDIT=-M1;
  272.       LIBELLE = TYPEVERS || ' ' || TYPEPIECE || ' ' || ST;
  273.       SUSPEND;
  274.       END
  275.     END
  276.   CREDIT=NULL;
  277.   DEBIT=NULL;
  278.   IF(TTC<>0) THEN
  279.     BEGIN
  280.     LIBELLE = TYPEPIECE || ' ' || ST;
  281.     IF (TTC>0) THEN DEBIT=TTC; ELSE CREDIT=-TTC;
  282.     SUSPEND;
  283.     END
  284.  
  285.   /*
  286.   * LIGNE 2
  287.   * (TVA)
  288.   */
  289.   NOLIGNE=2;
  290.   INFO1 = '445660';
  291.   INFO2 = '';
  292.   IF (TVA<>0) THEN
  293.     BEGIN
  294.     /* Faire d'abord le port */
  295.     IF (DETAIL_TVA_PORT=1 AND PORT<>0) THEN
  296.       BEGIN
  297.       LIBELLE = 'TVA ' || CAST(CAST(TVAPORT AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  298.       M1 = (PORT * TVAPORT /10000);
  299.       TVA = TVA - M1;
  300.       IF (M1<0) THEN DEBIT=-M1; ELSE CREDIT=M1;
  301.       INFO2 = 'PORT';
  302.       SUSPEND;
  303.       END
  304.     /* DΘtailler TVA avec un seul taux revient α ne pas dΘtailler la TVA */
  305.     I=0;
  306.     FOR SELECT DISTINCT TVA FROM LIGNES L
  307.       WHERE INDEXPIECE=:INDX AND TVA<>0 INTO :TAUXTVA DO I = I + 1;
  308.     /* Ensuite le cas simple */
  309.     IF ((DETAIL_TVA=0) or (i=1) ) THEN
  310.       BEGIN
  311.       /* Ne pas dΘtailler plusieurs taux
  312.       /* vΘrifier si un seul taux dans la piΦce
  313.       ce qui permet de faire un libellΘ prΘcis */
  314.       if (I=1) then LIBELLE = 'TVA ' || CAST(CAST(TAUXTVA AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  315.       ELSE LIBELLE = 'TVA';
  316.       CREDIT=NULL;
  317.       DEBIT=NULL;
  318.       IF (TVA<0) THEN DEBIT=-TVA; ELSE CREDIT=TVA;
  319.       INFO2 = '';
  320.       SUSPEND;
  321.       END /* IF */
  322.     ELSE
  323.       BEGIN
  324.       /* Cas compliquΘ: Calculer ligne par ligne.... */
  325.       FOR SELECT TVA,SUM(l.PRIX*l.QUANTITE*((100-(L.REMISE+:REDUC))/100)*TVA/10000) FROM LIGNES L
  326.           WHERE INDEXPIECE=:INDX AND TVA<>0
  327.           GROUP BY TVA INTO :TAUXTVA,:M1 DO
  328.         BEGIN
  329.         CREDIT=NULL;
  330.         DEBIT=NULL;
  331.         IF (ABS(TVA-M1)<0.03) THEN M1=TVA;
  332.         LIBELLE = 'TVA ' || CAST(CAST(TAUXTVA AS DECIMAL(6,2)) / 100 AS VARCHAR(8)) || '%';
  333.         TVA = TVA - M1;
  334.         IF (M1<0) THEN DEBIT=-M1; ELSE CREDIT=M1;
  335.         INFO2 = TAUXTVA;
  336.         SUSPEND;
  337.         END
  338.         /* Le reste de la TVA */
  339.       IF (TVA<>0) THEN
  340.         /* ProblΦme d'arrondi */
  341.         BEGIN
  342.         CREDIT=NULL;
  343.         DEBIT=NULL;
  344.         LIBELLE = 'Ecart sur calcul TVA par lignes';
  345.         INFO2 = 'ERREUR';
  346.         IF (TVA<0) THEN DEBIT=-TVA; ELSE CREDIT=TVA;
  347.         SUSPEND;
  348.         END                
  349.       END /* dΘtail*/
  350.     END /* tva <>0 */
  351.   /*
  352.   * LIGNE 3
  353.   * (LIGNES DE FACTURE HT)
  354.   */
  355.   NOLIGNE=3;
  356.   INFO1 = '';
  357.   INFO2 = '';
  358.   LIBELLE = '';
  359.   FOR SELECT L.LIBELLE,l.PRIX*l.QUANTITE*((100-(L.REMISE+:REDUC))/100) AS TOT,L.TVA,
  360.       R.CPTVENTE,R.CPTEXPORT
  361.       FROM LIGNES L
  362.       LEFT JOIN ARTICLES A ON A.INDX=L.INDEXARTICLE
  363.       LEFT JOIN DESIGNATIONS D ON D.INDXART=L.INDEXARTICLE AND D.CODELANGUE=1
  364.       LEFT JOIN RAYONS R ON R.PKEY=A.PKEYR
  365.       WHERE L.INDEXPIECE=:INDX AND PRIX<>0 AND QUANTITE<>0
  366.       ORDER BY 2 DESC
  367.       INTO :BLOBLIGNE,:M1,:TAUXTVA,:INFO1,:ST DO IF (HT<>0) THEN
  368.     BEGIN
  369.     CREDIT=NULL;
  370.     DEBIT=NULL;
  371.     IF (TAUXTVA=0) THEN INFO1 = ST; /* utiliser compte import au lieu de compte achat */
  372.     IF ((DETAIL_HT=0) OR (ABS(HT-M1)<0.03)) THEN M1 = HT; /* si pas de dΘtail: prendre seulement 1 compte */
  373.     HT = HT - M1;
  374.     IF (M1<0) THEN DEBIT=-M1; ELSE CREDIT=M1;
  375.     SUSPEND;
  376.     END
  377.   BLOBLIGNE = NULL;
  378.   IF (HT<>0) THEN
  379.     /* ProblΦme d'arrondi */
  380.     BEGIN
  381.     CREDIT=NULL;
  382.     DEBIT=NULL;
  383.     LIBELLE = 'Ecart sur calcul HT par lignes';
  384.     INFO2 = 'ERREUR';
  385.     IF (HT<0) THEN DEBIT=-HT; ELSE CREDIT=HT;
  386.     SUSPEND;
  387.     END
  388.   END
  389. END
  390.  ;
  391.  
  392.  
  393.